iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
自我挑戰組

學習C#續系列 第 5

Day 5: 繼承機制(Inheritance)

  • 分享至 

  • xImage
  •  

為什麼要有繼承機制(Inheritance)?
繼承是物件導向(OOP)的核心特性之一,允許衍生類別(子類別)繼承基底類別(父類別)的欄位、屬性與方法。

  • 提高程式碼重用性(Code Reusability):共通邏輯只需在父類別寫一次,避免重複撰寫相同的屬性與方法。
  • 便於維護與擴充(Maintainability):修改共用功能時僅需更新父類別,子類別自動同步生效。
  • 實現多型(Polymorphism):能將不同子類別視為同一父類別操作,提高系統彈性與抽象層級。
  • 建立階層分類(Hierarchical Classification):忠實反映現實世界中「是一種(is-a)」的層級關係。

通化(Generalization)與特化(Specialization)
繼承關係本質上是抽象與具體之間的雙向轉換過程:

  • 通化(一般化 / Generalization):
    • 由下而上(Bottom-Up) 的過程。
    • 提取多個具體類別之間的「共同特徵與行為」,抽象出一個共同的父類別。
    • 例如:將「汽車」、「機車」、「卡車」的共同屬性(引擎、速度、啟動)抽離出來,統合成「交通工具(Vehicle)」類別。
  • 特化(Specialization):
    • 由上而下(Top-Down) 的過程。
    • 以通用的父類別為基礎,衍生出具備「專屬屬性或額外行為」的子類別。
    • 例如:由「交通工具」衍生出「飛機」,額外具備「飛行高度」屬性與「起飛」方法。

組合關係(Composition / Has-a)與繼承(Inheritance / Is-a)的比較

物件導向設計原則強調「組合優於繼承(Favor composition over inheritance)」,兩者核心概念與區別如下:
https://ithelp.ithome.com.tw/upload/images/20260918/20178925JyFJCGq89O.png

繼承範例(is-a / 通化與特化):
https://ithelp.ithome.com.tw/upload/images/20260918/20178925kLxyKs8ZvU.png

組合範例(has-a):
https://ithelp.ithome.com.tw/upload/images/20260918/20178925E3KQDS3hcD.png


上一篇
Day 4: C# 複習-4(System.IO 檔案與資料流處理)
下一篇
Day 6: 單一繼承制(Single Inheritance)
系列文
學習C#續8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言